TreasureDataの利用経験を元にAmazon Athenaについて調べて比較してみた
定常業務にてAmazon Athenaを使うフローがあり、Amazon Athenaの使用例について調べてみたところTreasureDataを利用したワークフローと類似した点がみられました。
個人的な備忘録の意味も含めて、それぞれ比較してまとめてみました。
ざっくりとした概要
TreasureData
https://www.treasuredata.co.jp/
元となるリソースや可視化の選択肢が幅広く、該当するリソースを用いていた場合にワークフローへ組み込みやすいのが特徴です。
リソース例
- MySQL
- Google SpreadSheet
- Fluentd
- CSV
- ..
可視化例
- Redash
- Google SpreadSheet
- Tableau
- ..
Amazon Athena
https://aws.amazon.com/jp/athena/
AWS内で集計・分析を完結させることが可能です。S3上のデータに対してのSQL実行、及び結果のS3へ保存が可能な仕組みとなっています。
via: AWS - Amazon Athena - クエリ結果
クライアントツール
それぞれにコマンドラインベースにて実行可能なクライアントが用意されています。
Treasure Data
Treasure Data Toolbelt
Ruby製で、gemにてインストールを行います。実行したJobの状況確認等、ブラウザ上から管理画面を使わずに完了させることも可能です。
# sample_dbのexample Tableに集計掛けた結果をresult.csvとして保存する % td query -w -d sample_db "SELECT * FROM example" -f csv -o "result.csv"
Arm Treasure Data: Installing and Updating the Treasure Data CLI
Amazon Athena
awscli
Python製の、AWSの各サービスをコマンドラインベースで操作可能にするクライアントです。Amazon Athenaもその範囲に含まれています。
# 実行した結果をS3のexampleバケット下result_dirに出力する % aws athena start-query-execution \ --query-string "SELECT * FROM example;" \ --result-configuration OutputLocation=s3://example/result_dir
AWS CLI Command Reference: athena
athenacli
Python製の、ターゲットをAmazon Athenaに絞ったクライアントです。対話的にクエリを入力・実行可能です。出力先等は~/.athenacli/athenaclircに設定しておきます。
% athenacli -e 'SELECT * FROM example'
Developers.IO: Very cool らしい AthenaCLI を試してみたら、やっぱりクールだった件
利用したワークフローの例
比較での見易さを優先するため、フローのステップ数を合わせています。
via: Athena と AWS Glue を併用する際のベストプラクティス
Treasure Data | Amazon Athena | |
---|---|---|
集計用テーブルの生成 |
|
|
集計 | Job Query | Amazon Athena |
可視化 | Redash、 |
Amazon Quicksight、... |
SQLエンジン及びUDF
Treasure Data
Presto、及びHive。
UDF
Supported Presto and TD Functions
Amazon Athena
Presto、及びHive(一部DDL)。
UDF
現在、Athena ではカスタム UDF をサポートしていません。カスタム UDF のサポートが必要な場合は、お客様の要件についての詳細を athena-feedback@amazon.com に E メールでお問い合わせください。
via:AWS - Amazon Athena よくある質問。
感想
Amazon Athenaの挙動やメリット等の細かい点まで調査してみると、比較する上での一概に言い切れない点は更に多数あると感じました。ただ、AWSの重要な領域の一つであることは確かなので、より理解を深めていこうと思います。